package com.zhang.service;

import com.zhang.entity.OrderInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhang.enums.ProcessStatus;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 订单表 订单表 服务类
 * </p>
 *
 * @author zbw
 * @since 2022-04-20
 */
@Service
public interface OrderInfoService extends IService<OrderInfo> {

    //保存订单基本信息和详情信息
    Long saveOrderAndDetail(OrderInfo orderInfo);

    //生成一个流水号给页面作用域
    String generateTradeNo(String userId);

    //从redis中取出tradeNo并且进行对比
    boolean checkTradeNo(String userId, String tradeNoUI);

    //提交以后还需要删除redis中的流水号
    void deleteTradeNo(String userId);

    //验证商品的库存与价格
    String checkStoreAndPrice(String userId, OrderInfo orderInfo);

    //根据订单id查询订单信息
    OrderInfo getOrder(Long orderId);


    void updateOrderStatus(OrderInfo orderInfo, ProcessStatus processStatus);

    //通知库存系统减库存
    void sendMsgToWareHouse(OrderInfo orderInfo);

    //拆单逻辑
    String splitOrder(Long orderId, String wareHouseIdSkuIdMapJson);

}
